package com.atguigu.gulimall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
/*
* 1、整合mybatis-plus
*  1)、导入依赖
*  2）、配置
*       配置数据源
*       在启动类上使用  @MapperScan      （让mybaties-plus找到sql映射文件位置）
* 2、逻辑删除
*   1)、配置文件 配置
*   2)、在对应的字段上添加@tableLogic注解
* 3.JSR303
*   1)给bean中字段加上相应注解
*   2）在Controller中 开启校验功能（在使用bean的地方加上@Valid注解)
*   3）BingdingResult可以得到校验数据
*   4)分组校验（适用多场景的复杂校验）： 给bean的注解上添加 groups={xxx.class}，在接口的bean里使用@Validated({xxx.class}),若不使用@Validated({xxx.class})则分组校验不生效
*   5)自定义校验
*       自定义一个校验注解（@Documented
                          @Constraint(validatedBy = {}) !!!!!!注意
                            @Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
                            @Retention(RetentionPolicy.RUNTIME)
                            public @interface ListValue {}）
*       自定义一个校验器（ListValueConstraintValidator implements ConstraintValidator<ListValue,Integer> {）
*       在注解中关联校验器（  @Constraint(validatedBy = {ListValueConstraintValidator.class})这里可以根据条件（如bean字段的类型）关联多个校验器  ）
 * */

@MapperScan("com.atguigu.gulimall.product.dao")
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.atguigu.gulimall.product.feign")
public class GulimallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }

}
